实际上这道题可以用贪心解的……但是码量惊人 $QwQ$ 。
于是上网络流吧……这题显然是费用流。
对于每一天,我们将其拆成两个点,一个表示这天的早晨,一个表示这天的晚上。
我们从源点向每一天的晚上连一条边权为 $x$ 费用为 $0$ 的边,表示这一天我们需要处理的餐巾数,就是白天用掉的餐巾。
每一天的早晨,这些餐巾来自题目给出的地方,并且最终连向汇点,边权为 $x$ 费用为 $0$ 。
然后考虑每天早上餐巾的来源,现在题目给了四个操作:
- 买新的
- 丢到快洗店
- 丢到慢洗店
弃疗
对于买新的,我们只需要从源点连一条边权为 $inf$ 费用为 $p$ 的边到这一天的白天,我们餐巾的获取都来自源点。
丢到快洗店,也就是说第 $i$ 天晚上这些没有处理的毛巾丢到快洗店,那么第 $i+m$ 天将洗完,这个时候可以在早晨收到餐巾,于是从 $i$ 的晚上连一条边权为 $inf$ 费用为 $f$ 的边连向 $i+m$ 的白天。
丢到慢洗店,这个跟快洗店是一个道理。
关于弃疗,就是说放着不管了,可以理解为第 $i$ 天晚上的餐巾留到了第 $i+1$ 天,并且这些餐巾是不能用的,那么不会连向 $i+1$ 的早晨,于是从 $i$ 的晚上连一条边权为 $inf$ 费用为 $f$ 的边连向 $i+1$ 的晚上。
然后跑一边费用流板子就好了,注意要开 $long long$ 。
至于上面四个选项为什么边的容量都设为 $inf$ ,我们就拿买新的来说吧,题目又没有限制你最多买多少,所以就是允许你可以一直买,买无限条,就当成 $inf$ 啦。
Code:
1 |
|
本文标题:【题解】 「网络流24题」餐巾计划问题 网络流 luoguP1251
文章作者:Qiuly
发布时间:2019年03月09日 - 00:00
最后更新:2019年03月29日 - 13:52
原始链接:http://qiulyblog.github.io/2019/03/09/[题解]luoguP1251/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。